var request = require('request');
var VisualReq = function () { };
var ____apihost = VisualConst.getAppCfg()['comm']['host'];

var requests = request.defaults({
	headers: Lib.getRequestHeaders()
});

VisualReq.reloadRequests = function(){
	requests = request.defaults({
		headers: Lib.getRequestHeaders()
	});
}

VisualReq.loadDisplays = function (formdata, cb) {
	//console.log("loadClientInfo",formdata);
	//1，从服务端读取针对当前设备发布的内容地址，并展示
	requests({
		url: ____apihost + '/client/displays',   // 请求的URL
		method: 'POST',                   // 请求方法
		headers: {                       // 指定请求头
			'content-type':'application/json'
		},
		body:formdata
	}, function (error, response, body) {
		if (!error && response.statusCode == 200) {
			if (typeof (body) == 'string') {
				body = JSON.parse(body);
			}
			cb(body)
		} else if(!error) {
			cb({
				"code":response.statusCode,
				"msg":response.statusMessage
			})
		}else if(error) {
			cb({
				"code":-10000,
				"msg":error
			})
		}

	})
}

/**
 * 客户端启动时，加载信息
 * 1，客户端注册信息
 * 2，客户端要展示的内容
 */
VisualReq.loadClientInfo = function (formdata, cb) {
	// console.log("loadClientInfo",formdata,____apihost);
	//1，从服务端读取针对当前设备发布的内容地址，并展示
	requests({
		url: ____apihost + '/client/getClientInfo',   // 请求的URL
		method: 'POST',                   // 请求方法
		headers: {                       // 指定请求头
			'content-type':'application/json'
		},
		body:formdata
	}, function (error, response, body) {
		if (!error && response.statusCode == 200) {
			// console.log(body) // 输出网页内容
			if (typeof (body) == 'string') {
				body = JSON.parse(body);
			}

			cb(body)
		} else if(!error) {
			cb({
				"code":response.statusCode,
				"msg":response.statusMessage
			})
		}else if(error) {
			cb({
				"code":-10000,
				"msg":error
			})
		}

	})
}

//初始化注册时部门选择
VisualReq.initDepartSelect = function(formdata,cb){
	/**
	 * 初始化注册时部门选择
	 * **/
	requests({
		url: ____apihost + '/client/initDepartSelectData',   // 请求的URL
		method: 'POST',                   // 请求方法
		headers: {                       // 指定请求头
		},
		form:formdata
	}, function (error, response, body) {
		//console.log("初始化部门")
		if (!error && response.statusCode == 200) {
			body = JSON.parse(body);
			cb(body)
		} else if(!error) {
			cb({
				"code":response.statusCode,
				"msg":response.statusMessage
			})
		}else if(error) {
			cb({
				"code":-10000,
				"msg":error
			})
		}
	})
}

VisualReq.clientLogin = function(formdata,cb){

	/**
	 * 验证租户代码密码
	 * **/
	requests({
		url: ____apihost + '/client/clientLogin',   // 请求的URL
		method: 'POST',                   // 请求方法
		headers: {                       // 指定请求头
		},
		form:formdata
	}, function (error, response, body) {
		if (!error && response.statusCode == 200) {
			body = JSON.parse(body);
			cb(body)
		} else if(!error) {
			cb({
				"code":response.statusCode,
				"msg":response.statusMessage
			})
		}else if(error) {
			cb({
				"code":-10000,
				"msg":error
			})
		}
	})

}

VisualReq.updateClientInfo = function(formdata,cb){

	/**
	 * 修改绑定部门信息
	 * **/
	requests({
		url: ____apihost + '/client/updateClientInfo',   // 请求的URL
		method: 'POST',                   // 请求方法
		headers: {                       // 指定请求头
		},
		form:formdata
	}, function (error, response, body) {
		if (!error && response.statusCode == 200) {
			body = JSON.parse(body);
			cb(body)
		} else if(!error) {
			cb({
				"code":response.statusCode,
				"msg":response.statusMessage
			})
		}else if(error) {
			cb({
				"code":-10000,
				"msg":error
			})
		}
	})

}



/**
 * 注册信息
 */
VisualReq.regClientInfo = function (formdata, cb) {
	requests({
		url: ____apihost + '/client/regClientInfo',   // 请求的URL
		method: 'POST',                   // 请求方法
		headers: {                       // 指定请求头
		},
		form:formdata
	}, function (error, response, body) {
		console.log(response) // 输出网页内容
		if (!error && response.statusCode == 200) {
			console.log(body) // 输出网页内容
			if (typeof (body) == 'string') {
				body = JSON.parse(body);
			}
			cb(body)
		} else if(!error) {
			cb({
				"code":response.statusCode,
				"msg":response.statusMessage
			})
		}else if(error) {
			cb({
				"code":-10000,
				"msg":error
			})
		}
	})
}
VisualReq.loadLocationData = function (options, cb) {

	requests({
		url: ____apihost + '/client/getLocationData/appid',   // 请求的URL
		method: 'GET',                   // 请求方法
		headers: {                       // 指定请求头
			'Accept-Language': 'zh-CN,zh;q=0.8'

		}
	}, function (error, response, body) {
		if (!error && response.statusCode == 200) {
			if (typeof (body) == 'string') {
				body = JSON.parse(body);
			}
			cb(body)
		} else {
			cb(null)
		}
	})
}

VisualReq.eventCallback = function (option,data, cb) {
	requests({
		url: option['data']['apiurl'],   // 请求的URL
		method: 'POST',                   // 请求方法
		json:{
			"id":VisualConst.getCustomDevice()["deviceid"],
			"eventkey": option['data']['eventkey'],
			"data":data
		}
	}, function (error, response, body) {
		if (!error && response.statusCode == 200) {
			if (typeof (body) == 'string') {
				body = JSON.parse(body);
			}
			cb(body)
		} else {
			cb(null)
		}
	})
}

VisualReq.loadClientCfgJson = function (options, cb) {
	requests({
		url: ____apihost + '/client_cfg.json',   // 请求的URL
		method: 'GET',                   // 请求方法
		headers: {                       // 指定请求头
			'Accept-Language': 'zh-CN,zh;q=0.8'
		}
	}, function (error, response, body) {
		if (!error && response.statusCode == 200) {
			if (typeof (body) == 'string') {
				body = JSON.parse(body);
			}
			cb(body)
		} else {
			console.log(error,response,body);
			cb(_appConfig)
		}
	})
}

VisualReq.loadExmple = function (cb) {
	//1，从服务端读取针对当前设备发布的内容地址，并展示
	requests({
		url: 'http://stat.server.hezyun.cn:33404/client/exmples?ak=',   // 请求的URL
		method: 'POST',                   // 请求方法
		headers: {                       // 指定请求头
		}
	}, function (error, response, body) {
		if (!error && response.statusCode == 200) {
			
			// if (typeof (body) == 'string') {
			// 	body = JSON.parse(body);
			// }
			//getExmples(
			try {
				if(null!=body && body.startsWith("getExmples(")){
					var d = body.substring(body.indexOf("getExmples(") + "getExmples(".length);
					d = d.substring(0,d.length-1);
					// console.log(d) // 输出网页内容
					body = JSON.parse(d);
					body["data"].forEach(ele => {
						// console.log(ele)
						ele["duration"] = ele["duration"]||5;
					});
				}
				cb(body)
			} catch (error) {
				cb({})
			}
		} else if(!error) {
			cb({
				"code":response.statusCode,
				"msg":response.statusMessage
			})
		}else if(error) {
			cb({
				"code":-10000,
				"msg":error
			})
		}

	})
}